Many computer systems need to allocate/deallocate persistent storage during the course of the execution of various processes and applications handled by the computer systems. The term “persistent storage” refers to memory in which information stored therein is not lost when the device upon which the memory resides fails or is otherwise powered down. Memory which is persistent is also referred to as “non-volatile memory.”One example of persistent storage is a disk storage device. Thus, information in persistent storage is expected to survive a system failure unlike information stored in memory which is not persistent such as, for example, most main memory associated with a computer system. Memory which is not persistent is also referred to as “volatile memory.” One example of non-persistent storage is random access memory or RAM.
Conventional methods of storing information persistently include storage techniques associated with file systems and databases. As is known, the storage methods associated with such file systems and databases can be highly inefficient. The inefficiency of such conventional persistent storage techniques result in a high processing overhead. While file systems may have a lower overhead than databases, file system performance can be quite poor for file creation and file deletion. High overhead can also be a serious problem for persistent storage environments such as proxy caches on the World Wide Web, where data object creation and data object deletion constitute a significant fraction of request traffic.
There have been several solutions proposed for improving the known inefficiencies associated with persistent storage. For instance, the disk storage allocation approaches described in the U.S. patent application identified as Ser. No. 09/504,064, filed on Feb. 15, 2000, and entitled “Systems and Methods for Persistent and Robust Memory Management,” and the U.S. patent application identified as Ser. No. 09/504,610, filed on Feb. 15, 2000, and entitled “System and Method for Persistent and Robust Storage Allocation,” the disclosures of which are incorporated by reference herein, result in good performance when disk storage needs to be updated after every allocation or deallocation request. However, in situations where disk storage does not need to be updated after every allocation or deallocation request (i.e., when the situation dictates that the disk can be slightly out of date), the improved performance associated with these disk storage allocation approaches may not be realized.
Thus, there is a need for persistent storage techniques which address these inefficiency and overhead issues, as well as other related issues.